import RPi.GPIO as GPIO
import time

'''
pcf8591 adc
i2c 接口
树莓派本身无法检测到模拟量 只能通过外接adc模块
控制灯的亮暗:
1. pwm:数字信号 占空比控制
2. 模拟信号,直接0-5V,精度0.1V --可以电压随意变化
pi 自带库查找使用demo
reference 
i2c library
spi library
'''
# 当前文件夹中引入 pcf8591.py 库文件
import PCF8591 as ADC
import RPi.GPIO as GPIO

makerobo_DO = 17  #bcm 管脚,雨滴传感器管脚
GPIO.setmode(GPIO.BCM)

def makerobo_setup():
    ADC.setup(0x48) #设置i2c 器件地址 pcf8591
    GPIO.setup(makerobo_DO,GPIO.IN)
def myPrint(x):
    if(x==1):
        print("not rain")
    elif(x==0):
        print("is raining")
'''
雨滴传感器的DI引脚接到 pcf8591 adc芯片上
DO引脚只有状态改变 才有效
读DO状态,只有DO状态变化的时候--再输出当前DI读到的模拟量
DI显示具体的模拟量,大于多少算下雨  小于多少算不下雨.由DO来控制
'''
def loop():
    oldstatus=1
    makerobo_setup()
    while True:
        print(ADC.read(0))  #读取0 输入通道的值,插上跳线帽,采用内部电位器
        tmp=GPIO.input(makerobo_DO)
        if tmp!= oldstatus:
            oldstatus=tmp
            myPrint(tmp)
        time.sleep(0.2)

def destroy():
    ADC.write(0)
    GPIO.cleanup()  #释放资源

if __name__=='__main__':
    try:
        loop()
    except KeyboardInterrupt:   #按下 ctrl+c 释放资源
        destroy()